package com.ityedao.自定义排序规则Comparable;

import java.util.Arrays;
import java.util.Comparator;

public class ComparableTest {
    public static void main(String[] args) {
        Student[] students = new Student[4];
        students[0] = new Student("小花", 18, 168.5);
        students[1] = new Student("白月光", 45, 165.2);
        students[2] = new Student("逆魔王", 28, 188.9);
        students[3] = new Student("白骨精", 999, 172.6);

        // Arrays类 sort 对数组进行排序
//        Arrays.sort(students);
//        System.out.println(Arrays.toString(students));

        // public static <T> void sort(T[] arr, Comparator<? super T> c) 对数组进行排序（支持自定义排序规则）
        // 参数一：需要进行排序的数组
        // 参数二：Comparator比较器对象（用来制定对象的比较规则）
//        Arrays.sort(students, new Comparator<Student>() {
//            @Override
//            public int compare(Student o1, Student o2) {
//                // 制定比较规则：左边对象  o1   右边对象 o2
//                // 约定1：认为左边对象 大于 右边对象 请您返回正整数
//                // 约定2：认为左边对象 小于 右边对象 请您返回负整数
//                // 约定3：认为左边对象 等于 右边对象 请您一定返回0
////                if (o1.getHeight() > o2.getHeight()){
////                    return 1;
////                } else if (o1.getHeight() < o2.getHeight()) {
////                    return -1;
////                }
////                return 0;
//                // 代码优化：技巧
////                return Double.compare(o1.getHeight(), o2.getHeight()); // 升序
//                return Double.compare(o2.getHeight(), o1.getHeight()); // 降序
//            }
//        });

//        Arrays.sort(students, (Student o1, Student o2) -> {
//            // 代码优化：技巧
////          return Double.compare(o1.getHeight(), o2.getHeight()); // 升序
//            return Double.compare(o2.getHeight(), o1.getHeight()); // 降序
//        });

        Arrays.sort(students, (o1, o2) -> Double.compare(o2.getHeight(), o1.getHeight()));

        System.out.println(Arrays.toString(students));
    }
}
